#ifndef __POISSONGENERATOR_H__
#define __POISSONGENERATOR_H__

#define __SJ__

#include <omnetpp.h>
#include "AbstractGenerator.h"

/**
 * Klasa implementujaca generator ktorego odstepy czasowe miedzy wysylanymi
 * pakietami sa wartosciami losowymi wyznaczonymi z rozkladu Poissona.
 */
class PoissonGenerator : public AbstractGenerator
{
protected:
	/**
	 * Parametr okreslajacy wartosc oczekiwana jak i wariancje rozkladu
	 * poissona.
	 */
	double lambda;

	/**
	 * Iniciuje parametr 'lambda'. Wewnetrznie wywoluje metode 'initialize'
	 * swojej nadklasy.
	 */

	#ifdef __SJ__

	simtime_t* times;
	int packets;
	int max_packets;
	double offset;

	#endif


	virtual void initialize();
	/**
	 * Wyznacza czas wygenerowania kolejnego pakietu na podstawie czasu ostatnio
	 * wygenerowanego pakietu oraz rozkladu Poissona.
	 */
	virtual simtime_t getNextPacketArrivalTime(simtime_t lastPacketArrival);
};

#endif
